package de.datamining.category;

import static org.junit.Assert.assertTrue;

import java.net.URL;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.junit.Test;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import de.preiscrawler.AlleAnbieter;
import de.preisrobot.entity.Artikel;
import de.preisrobot.persistence.dao.ArtikelDao;
import de.service.HtmlUnitTest;

public class CategoryDM extends HtmlUnitTest {

    @Test
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    @Rollback(value = false)
    public void testListArtikelLink() {

        ArtikelDao dao = (ArtikelDao) getArtikelDaoBean();
        List<Artikel> find = dao.findArtikelByAnbieter(AlleAnbieter.BILLIGER);
        int stopConter = 0;

        for (Artikel amazonArtikel : find) {
            stopConter++;

            handleLink(amazonArtikel);

            if (stopConter % 40 == 0) {
                try {
                    Thread.sleep(4000);
                } catch (Exception e) {
                }
            }

        }
 
    }

    private void handleLink(Artikel amazonArtikel) {

        String imageLink = amazonArtikel.getArtikelLink();
        System.out.println("hier "+imageLink);
        try {
            int indexOf = imageLink.indexOf("(");
            if(indexOf>0){
            String substring = imageLink.substring(indexOf);
            System.out.println(substring);
            }
            
        } catch (Exception e) {
            
            String artikelNr = amazonArtikel.getArtikelNr();
            
             Pattern pattern = Pattern.compile("\\(.*?\\)");
            // In case you would like to ignore case sensitivity you could use this
            // statement
            // Pattern pattern = Pattern.compile("\\s+", Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(artikelNr);
            if(matcher.matches()){
                System.out.println(matcher.group());
            }
            
            
            System.err.println("["+artikelNr+" NO URL: "+imageLink);
        }

    }
    
    @Test
    @Transactional(propagation = Propagation.REQUIRED)
    @Rollback(value = false)
    public void testListArtikelOhneBeschreibung() {

        ArtikelDao dao = (ArtikelDao) getArtikelDaoBean();
        List<Artikel> find = dao.findArtikel("select * from  artikel   where  beschreibung like ''");
     
        int count = 0;
        for (Artikel amazonArtikel : find) {
  
            count++;
            if(count> 300)
                return;
            Artikel findById = dao.findById(amazonArtikel.getId());
            String imageLink = amazonArtikel.getArtikelLink();
            System.out.println("hier "+imageLink);
          
            if(imageLink.contains("amazon")){
                String replace = imageLink.replace("http://www.amazon.de/", "");
                String substring = replace.substring(0, replace.indexOf("/"));
                String beschreibung = substring.replaceAll("-", " ");
                System.out.println(beschreibung);
                findById.setDesc(beschreibung);
                dao.merge(findById);
                
            }

//            if (stopConter % 40 == 0) {
//                try {
//                    Thread.sleep(4000);
//                } catch (Exception e) {
//                }
//            }

        }
 
    }

}
